'''
----案例：学生类----
编写一个学生类：
属性：姓名、性别、类别默认为people
方法：hello
'''

# class Student:
#     category = 'people'
#
#     def __init__(self, name, sex):
#         self.name = name
#         self.sex = sex
#
#     def hello(self):
#         print(f'我是{self.name},是{self.sex}生,你好')
#
#
# print(Student.category)
# student = Student('小张', '男')
# student.hello()

# 类的属性的方法
'''
----封装案例：学生类----
编写一个学生类：
属性：姓名、性别、类别默认为people
方法：hello
封装属性：年龄
增加方法：显示年龄、设置年龄
'''

#
# class Student:
#     category = 'people'
#
#     def __init__(self, name, sex, age):
#         self.name = name
#         self.sex = sex
#         self.__age = age
#
#     def hello(self):
#         print(f'我是{self.name},是{self.sex}生,你好')
#
#     def set_age(self, age):
#         if 0 <= age <= 200:
#             self.__age = age
#
#     def get_age(self):
#         if self.sex != '女':
#             return self.__age
#         else:
#             return '年龄保密'
#
#
# z = Student('xiaozhang', '男', 18)
# print(z.get_age())

# ----案例：QQ群类----
# 编写一个QQ群类：
# 属性：群号、群名、成员、群暗号
# 方法：显示群号、显示群名、显示群成员、出示群暗号、添加群成员、移除群成员
'''
class Qq:
    def __init__(self, number, name, members, password):
        self.number = number
        self.name = name
        self.members = members
        self.password = password

    def get_number(self):
        print('群号是：', self.number)

    def get_name(self):
        print('群名是：', self.name)

    def get_member(self):
        print('成员是：', self.members)

    def get_password(self):
        tag = 0
        pwd = input('请输入你的暗号：')
        if pwd == self.password:
            tag = 1
            print('上天台')
        else:
            print('有内鬼，终止交易')
        return tag

    def add_member(self):
        tag = self.get_password()
        if tag == 1:
            name = input('请输入你新的成员名字：')
            self.members.append(name)
            print(name, '已添加群聊')
            print(self.members)

    def del_member(self):
        tag = self.get_password()
        msg = 0
        if tag == 1:
            name = input('请输入你需要移除的成员名字：')
            for member in self.members:
                if name == member:
                    msg = 1
                    self.members.remove(member)
                    print(member, '已被踢出群聊')
            if msg == 0:
                print(member, '不在此群聊')


qq = Qq('123', '123', ['xiaozhang', 'aaaa'], '111')
qq.get_number()
qq.get_member()
qq.get_name()
qq.get_password()
qq.add_member()
qq.del_member()
'''

'''
----封装案例：银行卡类----
编写一个银行卡类：
属性：银行名称、卡号、密码、姓名、余额
方法：登录、存款、取款
封装属性：余额
封装方法：登录
增加方法：显示余额、初始化余额
'''

# class Bank:
#     card_name = '建设银行'
#
#     def __init__(self, id, password, name, balance):
#         self.id = id
#         self.password = password
#         self.name = name
#         self.balance = balance
#
#     def assert(self):
#         tag = 0
#         id = input('请输入你的银行卡号：')
#         pwd = input('请输入你的银行卡密码：')
#         if id == self.id and pwd == self.password:
#             tag = 1
#         return tag
#
#     def save_balance(self):
#         tag = self.assert()
#         if tag == 1:
#             save_balance = float(input('你需要存入多少钱：'))
#             self.balance += save_balance
#             print(f'存入成功，余额为{self.balance}')
#
#     def take_money(self):
#         tag = self.assert()
#         if tag == 1:
#             take_balance = float(input('你需要取出多少钱：'))
#             if take_balance <= self.balance:
#                 self.balance -= take_balance
#                 print(f'取款成功，余额为{self.balance}')
#             else:
#                 print('余额不足')
#
#
# if __name__ == '__main__':
#     card =Bank('1001','123','xiaozhang',1000)
#     # print(card.assert())
#     card.save_balance()
#     card.take_money()

'''
----无人新零售----
随着无人新零售经济的崛起，商场、车站、大厦等各种场所都引入了无人饮品自动售货机，方便人们选购自己想要的饮品。
购买者选择想要的饮品，通过投币或扫码的方式支付，支付成功后从出货口取出饮品。
本案例要求编写代码，利用函数实现具有显示饮品信息、计算销售总额等功能的程序。

# 饮品信息 可以字典存储
goods = {'可口可乐': 2.5, '百事可乐': 2.5, '冰红茶': 3, '脉动': 3.5}

# 饮品信息 可以列表嵌套字典存储
goods1 = {'id': '1001', 'name': '可口可乐', 'price': 2.5}
goods2 = {'id': '1002', 'name': '冰红茶', 'price': 3}
goods3 = {'id': '1003', 'name': '脉动', 'price': 3.5}
goods_list = [goods1, goods2, goods3]
'''
'''
----无人新零售----
随着无人新零售经济的崛起，商场、车站、大厦等各种场所都引入了无人饮品自动售货机，方便人们选购自己想要的饮品。
购买者选择想要的饮品，通过投币或扫码的方式支付，支付成功后从出货口取出饮品。
本案例要求编写代码，利用函数实现具有显示饮品信息、计算销售总额等功能的程序。

# 饮品信息 可以字典存储
goods = {'可口可乐': 2.5, '百事可乐': 2.5, '冰红茶': 3, '脉动': 3.5}

# 饮品信息 可以列表嵌套字典存储
'''

goods1 = {'id': '1001', 'name': '可口可乐', 'price': 2.5}
goods2 = {'id': '1002', 'name': '冰红茶', 'price': 3}
goods3 = {'id': '1003', 'name': '脉动', 'price': 3.5}
goods_list = [goods1, goods2, goods3]


class Unmanned_retail:
    def __init__(self, goods_list):
        self.goods_list = goods_list
        self.total_sales = 0

    def show_goods(self):
        for goods in goods_list:
            print(f'商品ID：{goods["id"]},\t商品名称：{goods["name"]}\t 商品价格：{goods["price"]}')

    def buy_goods(self):
        tag = 0
        goods_id = input('请输入您要购买的商品ID:')
        for goods in goods_list:
            if goods_id == goods['id']:
                tag = 1
                count = int(input('请输入商品数量：'))
                money = count * float(goods['price'])
                print(f'您的商品{goods["name"]}选购成功,所购金额为{money}')
                break
        if tag == 0:
            print('商品编码id错误')
        return money

    def count_total_goods(self):
        self.total_sales += self.buy_goods()
        return self.total_sales


if __name__ == '__main__':
    retail = Unmanned_retail(goods_list)
    retail.show_goods()
    retail.buy_goods()
    total_goods = retail.count_total_goods()
    print(f'总销售额为：{total_goods}')
